#include<string.h>
#include<sys/wait.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
 // pid_t ret=fork();
 //  if(ret==0)
 //    {
 //      //child
 //     printf("i am child pid:%d ppid::%d\n",getpid(),getppid());
 //     sleep(10);
 //     exit(0);
 //    }
 //   else{
 //   //father
 //     printf("i am father pid:%d ppid::%d\n",getpid(),getppid());
 //       int status = 0;
 //       pid_t ret = wait(&status);
 //       if(ret >= 0){
 //           printf("wait child success!, %d\n", ret);
 //           printf("status: %d\n", status);
 //           printf("child exit code : %d\n", (status>>8)&0xFF);
 //           printf("child get signal: %d\n", status&0x7F);
 //       }
 //       printf("Fahter run ....\n");
 //     _exit(1);
 //    }
 // return 0;
  pid_t  ids[10];
    for(int i = 0; i < 10; i++){
        pid_t id = fork();
        if(id == 0 ){
            //child
            int count = 10;
            while(count > 0){
                printf("child do something!: %d, %d\n", getpid(), getppid());
                sleep(1);
                count--;
            }
            exit(i);
        }
        //father
        ids[i] = id;
    }

  //  int count = 0;
  //  while(count < 10){
  //      int status = 0;
  //      pid_t ret = waitpid(ids[count], &status, 0);
  //      if(ret >= 0){
  //          printf("wait child success!, %d\n", ret);
  //          if(WIFEXITED(status)){
  //              printf("child exit code : %d\n",WEXITSTATUS(status));
  //          }
  //          else{
  //              printf("child not exit normal!\n");
  //          }
  //      }
  //      count++;
  //  }
    int count=0;
    while(count<10)
    {
      int status=0;
      pid_t ret=waitpid(ids[count],&status,0);
      if(ret>0)
      {
        printf("wait child sucess %d\n",ret);
        if(WIFEXITED(status))//子进程正常返回为真，非正常返回为-1，查看进程是否正常退出
        {
              printf("child exit code : %d\n",WEXITSTATUS(status));//WEXITSTATUS用来查看退出码，提取子进程退出码
        }
        else{
          printf("this is error output\n");
        }
      }
      count++;
    }
    return 0;
}
